package iedcyt.acute.dataAccess.dao.htmlUnit;

import iedcyt.acute.dataAccess.generic.IntRowMapper;
import iedcyt.acute.dataAccess.generic.SpringDao;
import iedcyt.acute.dataAccess.generic.StringRowMapper;
import iedcyt.acute.dataAccess.idao.htmlUnit.IUTIDDao;
import java.util.ArrayList;
import java.util.List;


/**
 * Acceso a la tabla UTID que contiene un listado de UTID
 * @author 53385255R
 *
 */
public class UTIDDao extends SpringDao implements IUTIDDao  {

	
	/**
	 * Obtiene todos los Utid de la tabla en formato cadena
	 * @see iedcyt.acute.dataAccess.idao.htmlUnit.IUTIDDao#selectAll()
	 * @return listado de utids
	 */
	@Override
	public List<String> selectAll() {
		
		return _jdbcTemplate.query("SELECT utid FROM UTID",
				new StringRowMapper());
	}
	
	/**
	 * Cuenta el numero de UTIDs
	 * @return cantidad de utids
	 * @see iedcyt.acute.dataAccess.idao.htmlUnit.IUTIDDao#count()
	 */
	@Override
	public int count() {
		return _jdbcTemplate.query("select count(*) from utid", new IntRowMapper()).get(0);
	}
	
	/**
	 * Selecciona una de las mitades del listado completo de utids determinados por limit
	 * @param limit indica el limite inferior (2) o superior (1) de los utids
	 * @return  listado de utids (solo una mitad)
	 * @see iedcyt.acute.dataAccess.idao.htmlUnit.IUTIDDao#select(int)
	 */
	@Override
	public List<String> select(int limit) {
		switch (limit) {
		case 1:
			return selectTop1();
		case 2: 
			return selectDown1();
		default:
			return new ArrayList<String>();
			
		}
	}
		

	/**
	 * @return devuelve la mitad superior de los utids
	 */
	public List<String> selectTop1() {
		
		int topNum = count()/2;
	
		return _jdbcTemplate.query("SELECT Top " + topNum + " utid FROM UTID order by utid asc",
				new StringRowMapper());
   
	}
	
	
	/**
	 * @return devuelve la mitad inferior de los utids
	 */
	public List<String> selectDown1() {

		int topNum = count()/2;
	
		return _jdbcTemplate.query("SELECT Top " + topNum + " utid FROM UTID order by utid desc",
				new StringRowMapper());
   
	}


	
}

